本发明是一种PPTL符号模型检测方法,属可信计算领域,本发明使用具有完全正则表达能力的规范语言PPTL描述待验证系统期望性质;使用Kripke结构M=(S,R,L)描述系统模型,借助ROBDD对符号化系统模型M进行搜索,通过构建标记正则图检查期望性质公式是否可满足,节省后续操作时间,提高检测效率。本发明仅需基于时序操作符“○”的检测过程,降低了检测复杂度。本发明提升了模型检测可处理问题的规模,有效缓解状态空间爆炸问题,同时具有描述状态敏感、顺序和闭包性质的能力,可以应用于工业、农业、军事、科研等领域硬件系统设计缺陷的检测,软件系统控制逻辑错误的检查以及通信协议正确性的形式化验证。
1.一种用于硬件电路系统的PPTL符号模型检测方法,其特征在于:使用具有完全正则表达能力的规范语言PPTL描述待验证系统的期望性质;使用Kripke结构M=(S,R,L)描述待验证系统模型,并将模型M的状态集合S和迁移关系R使用布尔变量进行编码,进而将编码得到的布尔公式使用归约有序二叉决策图表示,借助于归约有序二叉决策图的布尔公式操作机制对被验证系统模型M进行搜索,模型检测步骤包括:步骤1:首先对待验证系统建模,采用Kripke结构描述模型M=(S,R,L),并将模型M中的状态集合S和迁移关系R分别编码为形式是x
1·x
2·...·x
n和(x
1·x
2·...·x
n)·(x
1′·x
2′·...·x
n′)的布尔公式,并将标记函数L定义为AP→2
S,其中AP为原子命题的集合,2
S为状态集合S的幂集;标记函数L将每个原子命题a
i∈AP映射到满足a
i的状态集合;步骤2:使用PPTL描述待验证系统的期望性质,得到期望性质公式Q;步骤3:计算满足期望性质公式Q的状态集合的布尔编码B
Q;对于任何以PPTL描述的期望性质公式Q,将Q改写为其正则形,记为NF
Q,并构建Q的完全正则图G
Q,其中计算满足以PPTL描述的期望性质公式Q的状态集合的布尔编码B
Q的具体步骤包括:步骤3.1:定义期望性质公式Q的正则形,对于任何以PPTL描述的期望性质公式Q,Q的正则形定义为:
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>其中Q
P为Q中出现的原子命题的集合,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="604"/>l为Q
P中原子命题的数量,l=|Q
p|,n为Q的正则形中描述当前性质的析取项Q
ej∧empty的数量,n
0为Q的正则形中描述未来性质的析取项Q
ci∧○Q
i′的数量,1≤n(n
0)≤3
l,m为状态公式Q
ej中原子命题的数目,m
0为状态公式Q
ci中原子命题的数目,1≤m(m
0)≤l;状态子公式q
ik和q
ih属于Q
P,对于任意公式r∈Q
P,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="39"/>表示r或者
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="36"/>r;Q
i′是一个用时序操作符“○”修饰的PPTL时序公式;步骤3.2:根据步骤3.1所述的正则形定义将期望性质公式Q改写为其正则形,记为NF
Q=f
i∨f
2∨...∨f
n,其中包含n个用析取操作符“∨”连接的期望性质子公式f
1,...,f
n,用这些期望性质子公式组成期望性质子公式集合N
Q={f
1,...,f
n};步骤3.3:定义期望性质公式Q的标记正则图,对于任何以PPTL描述的期望性质公式Q,将Q的标记正则图(LNFG)定义为有向图G=(V(Q),E(Q),V
0,L={L
1,L
2,...L
m}),其中V(Q)是结点集合,每个结点对应一个PPTL公式;E(Q)是有向边的集合,每条边记为(v
Q,Q
e,v
F),即从结点v
Q到结点v
F有一条用状态公式Q
e标记的有向边;V
0是初始结点的集合;标记集合L中的每个子集合L
k(1≤k≤m)为带标签l
k~的结点集合,k为标签的计数变量;步骤3.4:根据步骤3.3所述的标记正则图定义,构造期望性质公式Q的标记正则图,记为G
Q;对于任何期望性质公式Q,根据其正则形NF
Q都可以构造其标记正则图G
Q,其中构建期望性质公式Q的标记正则图G
Q的具体步骤如下:步骤3.4.1:如果期望性质公式Q的形式为P
1∨P
2∨...∨P
n,则为每个期望性质子公式P
i(1≤i≤n)构造一个与P
i对应的结点v
Pi,v
Pi∈V(Q)且v
Pi∈V
0;否则,仅为期望性质公式Q构造一个与Q对应的结点v
Q,v
Q∈V(Q)且v
Q∈V
0;步骤3.4.2:将计数变量k的初值置为1;步骤3.4.3:从可达结点集合V(Q){v
empty}中任选一个结点,记为v
Q1,如果v
Q1对应的PPTL公式Q
1形式为Q
i;Q
j,将Q
1改写为Q
i∧fin(l
k);Q
j,v
Q1加入计数变量为k的标记结点集合L
k;步骤3.4.4:将Q
1展开为其正则形
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>构造一个与期望性质子公式empty对应的结点v
empty,v
empty∈V(Q),对于所有1≤j≤h,有向边(v
Q1,Q
ej,v
empty)∈E(Q);对于所有1≤i≤k,构造一个与时序公式Q
i′对应的结点v
Qi′,v
Qi′∈V(Q),有向边(v
Q1,Q
cj,v
Qi′)∈E(Q),从可达结点集合V(Q){v
empty}中删除v
Q1,并将计数变量k加1;步骤3.4.5:如果可达结点集合V(Q){v
empty}不为空,则转到步骤3.4.3,否则转到步骤3.4.6;步骤3.4.6:期望性质公式Q的标记正则图构建结束;如果G
Q中不包含v
empty结点,并且对于G
Q中的任意无限路径π,π中出现无限多次的结点的集合记为Inf(π),存在一个标记结点集合L
i,使得Inf(π)是L
i的子集,那么满足Q的状态集合的布尔编码B
Q=0,转到步骤3.8,反之转到步骤3.5;步骤3.5:从期望性质子公式集合N
Q中任选一个期望性质子公式f
i,使用以布尔公式符号化表示的状态集合S和迁移关系R计算出满足期望性质子公式f
i的状态集合的布尔编码B
fi,如果f
i中包含状态公式,那么满足该状态公式的状态集合的布尔编码不经过形式判定,直接由符号化的状态集合S和标记函数L求得;期望性质子公式f
i的形式仅为Q
e∧empty和Q
ie∧○Q′
i两种形式,其中计算满足f
i的状态集合的布尔编码B
fi的具体步骤包括:步骤3.5.1:如果期望性质子公式f
i的形式为Q
e∧empty,那么B
fi=B
Qe,其中B
Qe为待验证系统模型M中满足状态公式Q
e的状态集合的布尔编码,转步骤3.5.4,否则转到步骤3.5.2;步骤3.5.2:如果期望性质子公式f
i的形式为Q
ie∧○Q′
i,且PPTL时序公式Q′
i之前未被标记过,那么,首先使用步骤3计算满足PPTL时序公式Q′
i的状态集合的布尔编码B
Q′i,然后,使用逻辑与操作符“·”连接满足状态公式Q
ie的状态集合的布尔编码B
Qie与B
Q′i在迁移关系R作用下的原象R
-1(B
Q′i)得到B
fi,即B
fi=B
Qie·R
-1(B
Q′i),然后标记Q′
i,转步骤3.5.4,否则转到步骤3.5.3;步骤3.5.3:如果期望性质子公式f
i的形式为Q
ie∧○Q′
i,且PPTL时序公式Q′
i之前被标记过,那么,首先使用步骤3和不动点理论计算满足已标记过的PPTL时序公式Q′
i的状态集合的布尔编码fixpoint(τ(B
Q′i));计算满足时序公式Q′
i的状态集合的布尔编码B
Q′i的过程中,如果出现已标记过的时序公式,那么需要借助不动点理论刻画B
Q′i,B
Q′i的布尔方程形如:τ(B)=B
Qie·R
-1(B
Qje·R
-1(B
Qke·R
-1(B))),其中,计算满足已标记过的时序公式Q′
i的状态集合的布尔编码fixpoint(τ(B
Q′i))的具体步骤如下:步骤3.5.3.1:将布尔方程τ(B)=B
Qie·R
-1(B
Qji·R
-1(B
Qke·R
-1(B)))中的自变量B的初值置为B
Qie,即B=B
Qie,同时将τ(B)的值赋给布尔变量B′;步骤3.5.3.2:如果自变量B的值等于布尔变量B′的值,则转到步骤3.5.3.4,否则转到步骤3.5.3.3;步骤3.5.3.3:将布尔变量B′的值赋给自变量B,将B更新之后的值代入布尔方程τ(B),并将τ(B)的值赋给布尔变量B′,转到步骤3.5.3.2;步骤3.5.3.4:fixpoint(τ(B
Q′i))的值为B的值,满足时序公式Q′
i的状态集合的布尔编码fixpoint(τ(B
Q′i))的计算过程结束;然后使用逻辑与操作符“·”连接满足状态公式Q
ie的状态集合的布尔编码B
Qie与fixpoint(τ(B
Q′i))在迁移关系R作用下的原象R
-1(fixpoint(τ(B
Q′i)))得到B
fi,即B
fi=B
Qie·R
-1(fixpoint(τ(B
Q′i)));步骤3.5.4:计算满足期望性质子公式f
i的状态集合的布尔编码B
fi过程结束;子过程步骤3.5.2和步骤3.5.3计算满足时序公式Q′
i的状态集合的布尔编码B
Q′i时直接递归调用了步骤3本身;步骤3.6:从期望性质子公式集合N
Q中删除f
i,如果N
Q不为空则转到步骤
3.5,反之转到步骤3.7;步骤3.7:满足期望性质公式Q的状态集合的布尔编码B
Q=B
f1+...+B
fn;步骤3.8:计算满足期望性质公式Q的状态集合的布尔编码B
Q的过程结束;步骤4:如果B
Q≠0,那么待验证系统的模型M满足期望性质公式Q,模型检测结果显示待验证系统满足期望的性质;如果B
Q=0,那么待验证系统的模型M不满足期望性质公式Q,模型检测结果显示待验证系统不满足期望的性质;步骤5:待验证系统的PPTL符号模型检测结束。
技术领域本发明属于可信计算领域,主要涉及系统形式化建模与验证技术领域,尤其涉及命题投影时序逻辑(PPTL)和符号模型检测方法(SMC),具体是一种PPTL符号模型检测方法。可应用于工业、农业、军事、科研等领域硬件系统设计缺陷的检测,软件系统控制逻辑错误的检查以及通信协议正确性的形式化验证。技术背景近几年来,随着各种计算机应用软件,硬件电路、嵌入式系统和网络通信协议等在工业、农业、军事、科研等领域的广泛应用,这些系统及协议的复杂度日益增加俱增,对于可靠性的需求不断提高。形式化验证技术的发展和不断成熟使得我们可以利用计算机来解决上述问题。形式化验证技术起源于20世纪60年代的软件危机。当前,较为流行的形式化验证方法分为三类,分别是定理证明、等价性验证和模型检测。定理证明可以应用于有穷和无穷系统的验证,但是其自动化程度不高,证明过程耗时且容易出错,并且不能在证明失败时给出反例;等价性验证技术可用于验证不同抽象层次系统模型的等价性,但是它只能发现设计中的错误,不能发现其中的缺陷;模型检测技术是一种自动化的形式化验证方法,它通过穷举搜索状态空间的方式决定待验证系统模型是否满足期望的性质,并且在不满足期望性质时给出反例。在模型检测中,通常将验证系统期望的性质用时序逻辑(TL)公式描述,将待验证系统建模为有限状态机,如Kripke结构、迁移系统或者自动机。然后,遍历待验证系统模型的状态空间以检查待验证系统是否满足期望性质,并在期望性质不满足时提供反例,以定位设计错误和缺陷。传统的模型检测方法大多基于显式状态空间描述,当验证问题规模过大时,系统状态数目会随着系统并发执行部件数目的上升呈现指数级增长,从而引发状态空间爆炸问题。在本领域内提出了许多压缩状态空间的方法。常用的方法有抽象模型检测(AMC),限界模型检测(BMC),组合模型检测(CMC)和符号模型检测(SMC)等方法。符号模型检测方法由McMillan于1992年提出,其主要思想是:将待验证系统模型的状态空间编码为布尔公式,然后使用归约有序二叉决策图(ROBDD)的压缩存储机制,降低存储和搜索状态空间所需的内存空间,从而缓解状态空间爆炸问题。虽然,近几年来学术界提出了很多用于验证并发系统性质的时序逻辑,如计算树逻辑(CTL)和线性时序逻辑(LTL)等,但是这些时序逻辑的描述能力有限,至少有两种类型的性质是CTL和LTL都无法描述的:(1)状态敏感性质,例如,性质Q在第x个状态成立或者Q在第x个状态和第y个状态之间成立;(2)顺序性质和闭包性质,例如,性质Q在性质P成立之后成立,或者性质Q周期性的成立。进而导致使用模型检测对系统正则性质进行验证比较困难。命题投影时序逻辑(PPTL)引入了顺序(Chop)和投影(Projection)时序算子,其表达能力达到完全正则。使用PPTL可以方便地描述CTL和LTL无法描述的状态敏感、顺序和闭包性质。因此,如何应对状态空间爆炸问题并扩展期望性质的描述能力成为模型检测技术领域研究和亟待解决的关键问题之一。
发明内容本发明主要针对现有模型检测方法中,被验证系统模型存在过多并发执行部件引发的状态空间爆炸以及现有时序逻辑语言描述能力不足问题,提出一种高效、简洁的、状态空间紧凑、期望性质描述能力更强的PPTL符号模型检测方法。下面对本发明进行详细说明:本发明是一种PPTL符号模型检测方法,本发明使用具有完全正则表达能力的规范语言PPTL描述待验证系统的期望性质;使用Kripke结构M=(S,R,L)描述待验证系统模型,进而将编码得到的布尔公式使用ROBDD表示,借助于ROBDD的压缩存储和有效地布尔公式操作机制高效地对被验证系统模型M进行搜索。PPTL符号模型检测的具体步骤包括:步骤1:首先对待验证系统建模,采用Kripke结构描述模型M=(S,R,L),并将模型M中的状态集合S和迁移关系R分别编码为形如x
1·x
2·...·x
n和(x
1·x
2·...·x
n)·(x
1′·x
2′·...·x
n′)的布尔公式,其中“·”为逻辑与操作符,布尔公式的逻辑操作使用ROBDD实现,并将标记函数L定义为AP→2
S,其中AP为原子命题的集合,2
S为状态集合S的幂集;标记函数L将每个原子命题a
i∈AP映射到满足a
i的状态集合;步骤2:使用PPTL描述待验证系统的期望性质,得到期望性质公式Q;本发明的步骤1是对待验证系统建模并将模型M中的状态集合S和迁移关系R用布尔公式表示,步骤2是将待验证系统的期望性质使用规范语言PPTL进行描述,步骤1和步骤2可同时进行,也可先进行步骤1再进行步骤2。将步骤1和步骤2的结果相结合用于计算满足期望性质公式Q的状态集合的布尔编码。步骤3:计算满足期望性质公式Q的状态集合的布尔编码B
Q;步骤4:如果B
Q≠0,那么待验证系统的模型M满足期望性质公式Q,模型检测结果显示待验证系统满足期望的性质;如果B
Q=0,那么待验证系统的模型M不满足期望性质公式Q,模型检测结果显示待验证系统不满足期望的性质;步骤5:待验证系统的PPTL符号模型检测结束。本发明通过将待验证系统的状态空间和迁移关系使用布尔公式符号化表示,并借助ROBDD对状态空间进行高效、简洁的操作,降低了存储和操作状态空间所需要的内存空间,提升了模型检测处理问题的规模,并且缓解了状态空间爆炸问题;本发明还通过使用PPTL描述待验证系统性质,实现了对于CTL和LTL等现有的时序逻辑无法描述的状态敏感、顺序和闭包性质的描述,将待验证系统期望性质的描述能力扩展到完全正则型。本发明的实现还在于:对于任何以PPTL描述的期望性质公式Q,可以将Q改写为其正则形,记为NF
Q,并构建Q的完全正则图G
Q,步骤3中计算满足以PPTL描述的期望性质公式Q的状态集合的布尔编码B
Q的具体步骤包括:步骤3.1:定义期望性质公式Q的正则形,对于任何以PPTL描述的期望性质公式Q,Q的正则形定义为:
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>其中Q
P为Q中出现的原子命题的集合,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="284"/>
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="280"/>l为Q
P中原子命题的数量,l=|Q
p|,n为Q的正则形中描述当前性质的析取项Q
ej∧empty的数量,n
0为Q的正则形中描述未来性质的析取项Q
ci∧○Q
i′的数量,1≤n(n
0)≤3
l,m为状态公式Q
ej中原子命题的数目,m
0为状态公式Q
ci中原子命题的数目,1≤m(m
0)≤l;状态子公式q
jk和q
ih属于Q
P,对于任意公式r∈Q
P,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="21"/>表示r或者
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="66"/>;Q
i′是一个PPTL时序公式;步骤3.2:根据步骤3.1所述的正则形定义将期望性质公式Q改写为其正则形,记为NF
Q=f
1∨f
2∨...∨f
n,其中包含n个用析取操作符“∨”连接的期望性质子公式f
1,...,f
n,用这些期望性质子公式组成期望性质子公式集合N
Q={f
1,...,f
n};步骤3.3:定义期望性质公式Q的标记正则图,对于任何以PPTL描述的期望性质公式Q,将Q的标记正则图(LNFG)定义为有向图G=(V(Q),E(Q),V
0,L={L
1,L
2,...L
m}),其中V(Q)是结点集合,每个结点对应一个PPTL公式;E(Q)是有向边的集合,每条边记为(v
Q,Q
e,v
F),即从结点v
Q到结点v
F有一条用状态公式Q
e标记的有向边;V
0是初始结点的集合;标记集合L中的每个子集合L
k(1≤k≤m)为带标签l
k~的结点集合,k为标签的计数变量;步骤3.4:根据步骤3.3所述的标记正则图定义,构造期望性质公式Q的标记正则图,记为G
Q,如果G
Q中不包含v
empty结点,并且对于G
Q中的任意无限路径π,π中出现无限多次的结点的集合记为Inf(π),存在一个标记结点集合L
i,使得Inf(π)是L
i的子集,那么满足Q的状态集合的布尔编码B
Q=0,转到步骤3.8,反之转到步骤3.5;步骤3.5:从期望性质子公式集合N
Q中任选一个期望性质子公式f
i,使用以布尔公式符号化表示的状态集合S和迁移关系R计算出满足期望性质子公式f
i的状态集合的布尔编码B
fi,如果f
i中包含状态公式,那么满足该状态公式的状态集合的布尔编码不经过形式判定,直接由符号化的状态集合S和标记函数L求得;步骤3.6:从期望性质子公式集合N
Q中删除f
i,如果N
Q不为空则转到步骤3.5,反之转到步骤3.7;步骤3.7:满足期望性质公式Q的状态集合的布尔编码B
Q=B
f1+...+B
fn;步骤3.8:计算满足期望性质公式Q的状态集合的布尔编码B
Q的过程结束。本发明以布尔公式符号化表示待验证系统模型M的状态集合S和迁移关系R,使用期望性质公式Q的正则形NF
Q和标记正则图G
Q,并借助ROBDD对状态空间进行高效、简洁的搜索,获得满足以PPTL描述的期望性质公式Q的状态集合的布尔编码,降低了搜索状态空间所需要的空间和时间复杂度,提升了模型检测的效率。本发明的实现还在于:对于任何期望性质公式Q,根据其正则形NF
Q都可以构造其标记正则图G
Q,步骤3.4中构建期望性质公式Q的标记正则图G
Q的具体步骤如下:步骤3.4.1:如果期望性质公式Q的形式为P
1∨P
2∨...∨P
n,则为每个期望性质子公式P
i(1≤i≤n)构造一个与P
i对应的结点v
Pi,v
Pi∈V(Q)且v
Pi∈V
0;否则,仅为期望性质公式Q构造一个与Q对应的结点v
Q,v
Q∈V(Q)且v
Q∈V
0;步骤3.4.2:将计数变量k的初值置为1;步骤3.4.3:从可达结点集合V(Q){v
empty}中任选一个结点,记为v
Q1,如果v
Q1对应的PPTL公式Q
1形式为Q
i;Q
j,将Q
1改写为Q
i∧fin(l
k);Q
j,v
Q1加入计数变量为k的标记结点集合L
k;步骤3.4.4:将Q
1展开为其正则形
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>构造一个与期望性质子公式empty对应的结点v
empty,v
empty∈V(Q),对于所有1≤j≤h,有向边(v
Q1,Q
ej,v
empty)∈E(Q);对于所有1≤i≤k,构造一个与时序公式Q
i′对应的结点v
Qi′,v
Qi′∈V(Q),有向边(v
Q1,Q
cj,v
Qi′)∈E(Q),从可达结点集合V(Q){v
empty}中删除v
Q1,并将计数变量k加1;步骤3.4.5:如果可达结点集合V(Q){v
empty}不为空,则转到步骤3.4.3,否则转到步骤3.4.6;步骤3.4.6:期望性质公式Q的标记正则图构建结束。本发明使用期望性质公式的标记正则图中的有限路径(finitexa0path)刻画期望性质公式的有穷模型(finitexa0model),使用标记正则图中的无限路径(infinitexa0path)刻画期望性质公式的无穷模型(infinitexa0model),通过构建标记正则图快速检查满足期望性质公式的模型是否存在,即期望性质公式是否可满足,并在不可满足时直接返回满足期望性质公式的状态集合的布尔编码为0,节省了进行后续的操作过程所需的时间,提高了PPTL符号模型检测方法的效率。本发明的实现还在于:期望性质子公式f
i的形式仅为Q
e∧empty和Q
ie∧○Q′
i两种形式,步骤3.5中,计算满足期望性质子公式f
i的状态集合的布尔编码B
fi的具体步骤包括:步骤3.5.1:如果期望性质子公式P
i的形式为Q
e∧empty,那么B
fi=B
Qe,其中B
Qe为待验证系统模型M中满足状态公式Q
e的状态集合的布尔编码,转步骤3.5.4,否则转到步骤3.5.2;步骤3.5.2:如果期望性质子公式f
i的形式为Q
ie∧○Q′
i,且PPTL时序公式Q′
i之前未被标记过,那么,首先使用步骤3计算满足PPTL时序公式Q′
i的状态集合的布尔编码B
Q′i,然后,使用逻辑与操作符“·”连接满足状态公式Q
ie的状态集合的布尔编码B
Qie与B
Q′i在迁移关系R作用下的原象R
-1(B
Q′i)得到B
fi,即B
fi=B
Qie·R
-1(B
Q′i),然后标记Q′
i,转步骤3.5.4,否则转到步骤3.5.3;步骤3.5.3:如果期望性质子公式f
i的形式为Q
ie∧○Q′
i,且PPTL时序公式Q′
i之前被标记过,那么,首先使用步骤3和不动点理论计算满足PPTL时序公式Q′
i的状态集合的布尔编码fixpoint(τ(B
Q′i)),然后使用逻辑与操作符“·”连接满足状态公式Q
ie的状态集合的布尔编码B
Qie与fixpoint(τ(B
Q′i)在迁移关系R作用下的原象R
-1(fixpoint(τ(B
Q′i)))得到B
fi,即B
fi=B
Qie·R
-1(fixpoint(τ(B
Q′i)));步骤3.5.4:计算满足期望性质子公式fi的状态集合的布尔编码B
fi过程结束。步骤3是一个递归过程,也可称为递归函数,递归是指函数在其定义或说明中有直接或间接调用自身的方法,如果将步骤3看做一个以PPTL公式作为输入、以布尔公式作为输出的函数,那么,步骤3的定义中,其子过程步骤3.5.2和3.5.3中计算满足时序公式Q′
i的状态集合的布尔编码B
Q′i时直接调用了步骤3本身。本发明使用递归过程把计算满足期望性质子公式f
i的状态集合的布尔编码B
fi复杂问题转化为一个与原问题相似的规模较小的问题来求解,简化了B
fi的计算过程,提高了模型检测过程的效率。本发明还将所有期望性质子公式归纳为Q
e∧empty和Q
te∧○Q′
i两种形式,这两种形式只包含一个时序操作符“○”;同现有的时序逻辑CTL和LTL为所有的时序操作符提供一个独立的模型检测过程相比,本发明仅需要提供基于时序操作符“○”的符号模型检测过程,降低了PPTL符号模型检测过程的复杂度。本发明的实现还在于:计算满足时序公式Q′
i的状态集合的布尔编码B
Q′i的过程中,如果出现已标记过的时序公式,借助不动点理论刻画B
Q′i,B
Q′i的布尔方程形如:τ(B)=B
Qie·R
-1(B
Qje·R
-1(B
Qke·R
-1(B))),步骤3.5.3中,计算满足时序公式Q′
i的状态集合的布尔编码B
Q′i的具体步骤如下:步骤3.5.3.1:将布尔方程τ(B)=B
Qie·R
-1(B
Qie·R
-1(B
Qke·R
-1(B)))中的自变量B的初值置为B
Qie,即B=B
Qie,同时将τ(B)的值赋给布尔变量B′;步骤3.5.3.2:如果自变量B的值等于布尔变量B′的值,则转到步骤3.5.3.4,否则转到步骤3.5.3.3;步骤3.5.3.3:将布尔变量B′的值赋给自变量B,将B更新之后的值代入布尔方程τ(B),并将τ(B)的值赋给布尔变量B′,转到步骤3.5.3.2;步骤3.5.3.4:B
Q′i的值为B的值,满足时序公式Q′
i的状态集合的布尔编码B
Q′i的计算过程结束。本发明使用不动点理论刻画满足时序公式Q′
i的状态集合的布尔编码B
Q′i,通过将以B
Q′i为自变量的布尔方程τ(B)使用ROBDD表示,借助于ROBDD的高效布尔方程操作机制,加快了布尔方程τ(B)不动点的计算速度,提高了PPTL符号模型检测过程的效率。总体而言,本发明提出的PPTL符号模型检测方法很好的扩充了现有模型检测方法可验证问题的规模以及期望性质的描述能力。本发明采用具有完全正则描述能力的PPTL公式描述待验证系统期望的性质,采用Kripke结构M=(S,R,L)描述待验证系统模型,整个过程均使用以布尔公式编码状态集合S和迁移关系R,通过ROBDD的压缩存储和有效地布尔公式操作机制,可以高效地求得满足期望性质公式的状态集合的布尔编码。由于硬件电路和网络通信协议中包含许多取值范围为布尔域的变量,本发明特别适合于数字电路系统设计缺陷的检测和网络通信协议正确性的验证。因此,本发明是一种高效地、简洁的、实用方法。与现有技术相比,本发明具体优点如下所述:(1)由于使用PPTL公式描述待验证系统的期望性质,可以描述CTL和LTL等流行的时序逻辑无法描述的性质,如状态敏感性质、顺序性质和闭包性质,且PPTL的表达能力等价于完全正则语言,因此可以将符号模型检测中待验证系统期望性质的描述能力扩展到完全正则型。(2)将待验证系统模型的状态集合S和迁移关系R使用布尔公式符号化表示,然后使用ROBDD表示状态集合S和迁移关系R对应的布尔公式,借助ROBDD的压缩存储和有效地布尔公式操作机制对待验证系统模型的状态集合S进行高效、简洁的搜索,降低了存储和操作状态空间所需要的内存空间,从而提升模型检测可以处理问题的规模,并且有效缓解状态空间爆炸问题。(3)所有涉及状态空间S和迁移关系R的计算和操作过程均使用以ROBDD为基础的逻辑操作实现,同利用基本图形数据结构存储和操作状态空间相比,内存空间占用和计算复杂度更低,计算效率更高。(4)使用期望性质公式Q的标记正则图G
Q中的路径刻画期望性质公式的有穷模型和无穷模型,通过构建标记正则图可以快速检查满足期望性质公式Q的模型是否存在,即期望性质公式是否可满足。在期望性质公式Q不可满足时,直接返回满足期望性质公式的状态集合的布尔编码为0,节省进行后续的操作所需的时间,提高了PPTL符号模型检测方法的效率。(5)将所有期望性质子公式归纳为Q
e∧empty和Q
ie∧○Q′
i两种形式,这两种形式只包含一个时序操作符“○”,结合符号化的状态集合S、迁移关系R以及时序操作符“○”的语义,快速求出满足时序公式Q′
i的状态集合的布尔编码B
Q′i。同CTL和LTL的符号模型检测为每个时序操作符提供一个独立的处理过程相比,本发明仅需提供基于时序操作符“○”的符号模型检测过程,简化了计算过程,降低了PPTL符号模型检测过程的复杂度。
附图说明图1是PPTL符号模型检测流程图;图2是计算满足期望性质子公式f
i的状态集合的布尔编码B
fi的流程图;图3是实施例4中基于不动点计算满足时序公式Q′
i状态集合的布尔编码B
Q′i的示意图,其中图3(a)是迁移关系R的布尔公式表示,图3(b)是满足命题a
1的状态集合的布尔编码Ba
1的ROBDD表示,图3(c)~图3(e)是利用ROBDD对布尔公式τ(B
a1)=B
a1+B
a1·R
-1(B
a1)的不动点进行计算的过程,图3(f)为基于不动点计算满足时序公式Q′
i状态集合的布尔编码B
Q′i的流程图;图4是对以Verilog硬件描述语言描述的3x+1问题数字电路系统进行PPTL符号模型检测的示意图,其中图4(a)为以Verilog硬件描述语言描述的3x+1问题数字电路系统的以及在输入端输入整数5时的该系统的具体模型,图4(b)为图4(a)中3x+1问题数字电路系统的抽象模型,图4(c)为图4(b)中3x+1问题数字电路系统抽象模型中迁移关系的布尔编码,图4(d)和4(e)为以PPTL描述的3x+1问题数字电路系统期望性质公式P及P的子公式的正则形,图4(f)~图4(k)为期望性质公式P及P的子公式的标记正则图。
具体实施方式下面结合附图详细阐述本发明,图中的期望性质公式P即为期望性质公式Q:实施例1本发明是一种PPTL符号模型检测方法,参见图1,使用具有完全正则表达能力的规范语言PPTL描述待验证系统的期望性质;使用Kripke结构M=(S,R,L)描述待验证系统模型,并将模型M的状态集合S和迁移关系R使用布尔变量进行编码,进而将编码得到的布尔公式使用ROBDD表示,借助于ROBDD的压缩存储和有效地布尔公式操作机制高效地对被验证系统模型M进行搜索,待验证系统也称为待检测系统,状态空间S也称为状态集合S。PPTL符号模型检测的具体步骤包括:步骤1:首先对待验证系统建模,采用Kripke结构描述模型M=(S,R,L),并将模型M中的状态集合S和迁移关系R分别编码为形如x
1·x
2·...·x
n和(x
1·x
2·...·x
n)·(x
1′·x
2′·...·x
n′)的布尔公式,其中“·”为逻辑与操作符,布尔公式的逻辑操作使用ROBDD实现,并将标记函数L定义为AP→2
S,其中AP为原子命题的集合,2
S为状态集合S的幂集;标记函数L将每个原子命题a
i∈AP映射到满足a
i的状态集合。将待验证系统模型M中的状态集合S和迁移关系R编码为布尔公式的步骤包括:步骤1.1:将状态集合S编码为布尔公式,设原子命题集合AP中有n个原子命题a
1,a
2,...,a
n,为每个原子命题a
i指派一个对应的布尔变量x
i,那么状态集合S中的每个状态s均可以表示成一个由n个布尔变量组成的布尔公式x
1·x
2·...·x
n,其中如果s∈L(a
i),则x
i=1;反之,x
i=0;步骤1.2:将迁移关系R编码为布尔公式,迁移关系R是状态迁移的集合,首先将R中的每个状态迁移s→s′表示为形如(x
1·x
2·...·x
n)·(x
1′·x
2′·...·x
n′)的布尔公式,其中s∈L(a
i),则x
i=1;反之,x
i=0。同样地,s′∈L(a
i),则x
i′=1;反之,x
i′=0。不带标记的布尔公式(x
1·x
2·...·x
n)表示状态迁移s→s′的当前状态s,带标记的布尔公式(x
1′·x
2′·...·x
n′)表示状态迁移s→s′下一状态s′,最后,将迁移关系R用其特征方程进行符号化表示,即用逻辑或操作符“+”连接R中所有状态迁移关系的布尔公式编码;步骤1.3:状态集合S和迁移关系R的布尔编码过程结束。本发明将待验证系统模型的状态集合S和迁移关系R使用布尔变量编码,然后使用ROBDD表示编码得到的布尔公式,并借助ROBDD的压缩存储和有效地布尔公式操作机制对待验证系统模型的状态集合S进行高效、简洁的搜索,从而降低存储和操作状态空间所需要的内存空间,提升模型检测可以处理问题的规模,并且有效缓解状态空间爆炸问题。步骤2:使用PPTL描述待验证系统的期望性质,得到期望性质公式Q。本发明使用PPTL公式描述待验证系统的期望性质,可以描述CTL和LTL等流行的时序逻辑无法描述的性质,如状态敏感性质、顺序性质和闭包性质,且PPTL的表达能力等价于完全正则语言,因此可以将符号模型检测中待验证系统期望性质的描述能力扩展到完全正则型。步骤3:计算满足期望性质公式Q的状态集合的布尔编码B
Q。对于任何以PPTL描述的期望性质公式Q,可以将Q改写为其正则形,记为NF
Q,并构建Q的完全正则图G
Q,步骤3中计算满足以PPTL描述的期望性质公式Q的状态集合的布尔编码B
Q的具体步骤包括:步骤3.1:定义期望性质公式Q的正则形,对于任何以PPTL描述的期望性质公式Q,Q的正则形定义为:
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>其中Q
P为Q中出现的原子命题的集合,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="283"/>
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="280"/>l为Q
P中原子命题的数量,l=|Q
p|,n为Q的正则形中描述当前性质的析取项Q
ej∧empty的数量,n
0为Q的正则形中描述未来性质的析取项Q
ci∧○Q
i′的数量,1≤n(n
0)≤3
l,m为状态公式Q
ej中原子命题的数目,m
0为状态公式Q
ci中原子命题的数目,1≤m(m
0)≤l;状态子公式q
jk和q
ih属于Q
P,对于任意公式r∈Q
P,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="26"/>表示r或者
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="91"/>Q
i′是一个用时序操作符“○”修饰的PPTL时序公式;步骤3.2:根据步骤3.1所述的正则形定义将期望性质公式Q改写为其正则形,记为NF
Q=f
1∨f
2∨...∨f
n,其中包含n个用析取操作符“∨”连接的期望性质子公式f
1,...,f
n,用这些期望性质子公式组成期望性质子公式集合N
Q={f
1,...,f
n};步骤3.3:定义期望性质公式Q的标记正则图,对于任何以PPTL描述的期望性质公式Q,将Q的标记正则图(LNFG)定义为有向图G=(V(Q),E(Q),V
0,L={L
1,L
2,...L
m}),其中V(Q)是结点集合,每个结点对应一个PPTL公式;E(Q)是有向边的集合,每条边记为(v
Q,Q
e,v
F),即从结点v
Q到结点v
F有一条用状态公式Q
e标记的有向边;V
0是初始结点的集合;标记集合L中的每个子集合L
k(1≤k≤m)为带标签l
k~的结点集合,k为标签的计数变量;步骤3.4:根据步骤3.3所述的标记正则图定义,构造期望性质公式Q的标记正则图,记为G
Q,如果G
Q中不包含v
empty结点,并且对于G
Q中的任意无限路径π,π中出现无限多次的结点的集合记为Inf(π),存在一个标记结点集合L
i,使得Inf(π)是L
i的子集,那么满足Q的状态集合的布尔编码B
Q=0,转到步骤3.8,反之转到步骤3.5;对于任何期望性质公式Q,根据其正则形NF
Q都可以构造其标记正则图G
Q,步骤3.4中构建期望性质公式Q的标记正则图G
Q的具体步骤如下:步骤3.4.1:如果期望性质公式Q的形式为P
1∨P
2∨...∨P
n,则为每个期望性质子公式P
i(1≤i≤n)构造一个与P
i对应的结点v
Pi,v
Pi∈V(Q)且v
Pi∈V
0;否则,仅为期望性质公式Q构造一个与Q对应的结点v
Q,v
Q∈V(Q)且v
Q∈V
0;步骤3.4.2:将计数变量k的初值置为1;步骤3.4.3:从可达结点集合V(Q){v
empty}中任选一个结点,记为v
Q1,如果v
Q1对应的PPTL公式Q
1形式为Q
i;Q
j,将Q
1改写为Q
i∧fin(l
k);Q
j,v
Q1加入计数变量为k的标记结点集合L
k;步骤3.4.4:将Q
1展开为其正则形
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>构造一个与期望性质子公式empty对应的结点v
empty,v
empty∈V(Q),对于所有1≤j≤h,有向边(v
Q1,Q
ej,v
empty)∈E(Q);对于所有1≤i≤k,构造一个与时序公式Q
i′应的结点v
Qi′,v
Qi′∈V(Q),有向边(v
Q1,Q
cj,v
Qi′)∈E(Q),从可达结点集合V(Q){v
empty}中删除v
Q1,并将计数变量k加1;步骤3.4.5:如果可达结点集合V(Q){v
empty}不为空,则转到步骤3.4.3,否则转到步骤3.4.6;步骤3.4.6:期望性质公式Q的标记正则图构建结束。本发明使用期望性质公式Q的标记正则图G
Q中的有限路径刻画期望性质公式的有穷模型,使用标记正则图中的无限路径刻画期望性质公式的无穷模型,通过构建标记正则图可以快速检查满足期望性质公式Q的模型是否存在,即期望性质公式Q是否可满足。如果G
Q不包含empty结点,那么满足期望性质公式Q的有穷模型不存在;如果对于G
Q中的任意无限路径π,均存在一个标记结点集合L
i,使得π中出现无限多次的结点的集合Inf(π)是该标记结点集合L
i的子集,那么满足期望性质公式Q的无穷模型不存在。如果上述2个条件同时成立,那么期望性质公式Q不可满足,直接返回满足期望性质公式的状态集合的布尔编码为0,节省进行后续的操作过程所需的时间,从而提高PPTL符号模型检测方法的效率。步骤3.5:从期望性质子公式集合N
Q中任选一个期望性质子公式f
i,使用以布尔公式符号化表示的状态集合S和迁移关系R计算出满足期望性质子公式f
i的状态集合的布尔编码B
fi,如果f
i中包含状态公式,那么满足该状态公式的状态集合的布尔编码不经过形式判定,直接由符号化的状态集合S和标记函数L求得;期望性质子公式f
i的形式仅为Q
e∧empty和Q
ie∧○Q′
i两种形式,步骤3.5中,计算满足期望性质子公式f
i的状态集合的布尔编码B
fi的具体步骤包括:步骤3.5.1:如果期望性质子公式f
i的形式为Q
e∧empty,那么B
fi=B
Qe,其中B
Qe为待验证系统模型M中满足状态公式Q
e的状态集合的布尔编码,转步骤3.5.4,否则转到步骤3.5.2;步骤3.5.2:如果期望性质子公式f
i的形式为Q
ie∧○Q′
i,且PPTL时序公式Q′
i之前未被标记过,那么,首先使用步骤3计算满足PPTL时序公式Q′
i的状态集合的布尔编码B
Q′i,然后,使用逻辑与操作符“·”连接满足状态公式Q
ie的状态集合的布尔编码B
Qie与B
Q′i在迁移关系R作用下的原象R
-1(B
Q′i)得到B
fi,即B
fi=B
Qie·R
-1(B
Q′i),然后标记Q′
i,转步骤3.5.4,否则转到步骤3.5.3;步骤3.5.3:如果期望性质子公式f
i的形式为Q
ie∧○Q′
i,且PPTL时序公式Q′
i之前被标记过,那么,首先使用步骤3和不动点理论计算满足PPTL时序公式Q′
i的状态集合的布尔编码fixpoint(τ(B
Q′i)),然后使用逻辑与操作符“·”连接满足状态公式Q
ie的状态集合的布尔编码B
Qie与fixpoint(τ(B
Q′i))在迁移关系R作用下的原象R
-1(fixpoint(τ(B
Q′i)))得到B
fi,即B
fi=B
Qie·R
-1(fixpoint(τ(B
Q′i)));计算满足时序公式Q′
i的状态集合的布尔编码B
Q′i的过程中,如果出现已标记过的时序公式,那么需要借助不动点理论刻画B
Q′i,B
Q′i的布尔方程形如:τ(B)=B
Qie·R
-1(B
Qje·R
-1(B
Qke·R
-1(B))),步骤3.5.3中,计算满足时序公式Q′
i的状态集合的布尔编码B
Q′i的具体步骤如下:步骤3.5.3.1:将布尔方程τ(B)=B
Qie·R
-1(B
Qje·R
-1(B
Qke·R
-1(B)))中的自变量B的初值置为B
Qie,即B=B
Qie,同时将τ(B)的值赋给布尔变量B′;步骤3.5.3.2:如果自变量B的值等于布尔变量B′的值,则转到步骤3.5.3.4,否则转到步骤3.5.3.3;步骤3.5.3.3:将布尔变量B′的值赋给自变量B,将B更新之后的值代入布尔方程τ(B),并将τ(B)的值赋给布尔变量B′,转到步骤3.5.3.2;步骤3.5.3.4:B
Q′i的值为B的值,满足时序公式Q′
i的状态集合的布尔编码B
Q′i的计算过程结束。本发明使用不动点理论刻画期望性质公式Q的标记正则图G
Q中出现环路时满足时序公式Q′
i的状态集合的布尔编码B
Q′i。标记正则图G
Q中的环路是指一条从时序公式Q′
i对应的结点v
Q′i出发,最后回到v
Q′i结点的有向边,环路可以描述期望性质公式Q的无穷模型。这种迭代性质适合于使用不动点理论进行描述。与使用基本图形数据结构表示状态空间的模型检测计算不动点的方法相比,本发明通过定义以B
Q′i为自变量的布尔方程τ(B),并将τ(B)使用ROBDD表示,借助于ROBDD的高效布尔方程操作机制,加快了布尔方程τ(B)不动点的计算速度,减少计算不动点需要的迭代次数,提高了PPTL符号模型检测过程的效率。步骤3.5.4:计算满足期望性质子公式f
i的状态集合的布尔编码B
fi过程结束。本发明还将所有期望性质子公式归纳为Q
e∧empty和Q
ie∧○Q′
i两种形式,这两种形式只包含一个时序操作符“○”,结合符号化的状态集合S、迁移关系R以及时序操作符“○”的语义,可以快速求出满足时序公式Q′
i的状态集合的布尔编码B
Q′i。同CTL和LTL的符号模型检测为每个时序操作符提供一个独立的处理过程相比,本发明仅需提供基于时序操作符“○”的符号模型检测过程,降低了PPTL符号模型检测过程的复杂度。步骤3.6:从期望性质子公式集合N
Q中删除f
i,如果N
Q不为空则转到步骤3.5,反之转到步骤3.7;步骤3.7:满足期望性质公式Q的状态集合的布尔编码B
Q=B
f1+...+B
fn;步骤3.8:计算满足期望性质公式Q的状态集合的布尔编码B
Q的过程结束。如果将步骤3看做一个以PPTL公式作为输入、以布尔公式作为输出的函数,那么,步骤3是一个递归过程,因为步骤3定义中其子过程步骤3.5.2和步骤3.5.3计算满足时序公式Q′
i的状态集合的布尔编码B
Q′i时直接调用了步骤3本身。本发明使用步骤3的递归过程把计算满足期望性质子公式f
i的状态集合的布尔编码B
fi这一复杂问题层层转化为一个与原问题相似的规模较小的问题来求解,提高模型检测过程的效率。步骤4:如果B
Q≠0,那么待验证系统的模型M满足期望性质公式Q,模型检测结果显示待验证系统满足期望的性质;如果B
Q=0,那么待验证系统的模型M不满足期望性质公式Q,模型检测结果显示待验证系统不满足期望的性质;步骤5:待验证系统的PPTL符号模型检测结束。本发明将待验证系统模型的状态集合S和迁移关系R使用布尔公式符号化表示,然后将状态集合S和迁移关系R的布尔公式表示为ROBDD。本发明以ROBDD为基础存储数据信息,所有涉及状态空间和迁移关系的计算过程均使用定义在ROBDD上的逻辑操作实现,借助ROBDD的压缩存储和有效地布尔公式操作机制可以对待验证系统模型的状态集合S进行高效、简洁的搜索,降低存储和操作状态空间所需要的内存空间,本发明仅需基于时序操作符“○”的检测过程,降低了检测复杂度,提升了模型检测可处理问题的规模,从而提升模型检测可以处理问题的规模,并且有效缓解状态空间爆炸问题。本发明还使用PPTL公式描述待验证系统的期望性质,可以描述CTL和LTL等流行的时序逻辑无法描述的状态敏感性质、顺序和闭包性质,且PPTL的表达能力等价于完全正则语言,可以将符号模型检测中待验证系统期望性质的描述能力扩展到完全正则型。因此,本发明提出的PPTL符号模型检测方法为状态空间爆炸问题和期望性质描述能力不足问题提供了一种高效、简洁、可行的解决方案。实施例2PPTL符号模型检测方法同实施例1,参见图1,本发明是一种PPTL符号模型检测方法,将以PPTL描述的期望性质公式Q,改写为其正则形,记为NF
Q,并构建Q的完全正则图G
Q,使用以布尔公式符号化表示的状态集合S和迁移关系R,借助于ROBDD高效地计算满足期望性质公式Q的状态集合的布尔编码。计算满足以PPTL描述的期望性质公式Q的状态集合的布尔编码B
Q的具体步骤包括:步骤3.1:定义期望性质公式Q的正则形,对于任何以PPTL描述的期望性质公式Q,Q的正则形定义为:
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>其中Q
P为Q中出现的原子命题的集合,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="284"/>
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="281"/>l为Q
P中原子命题的数量,l=|Q
p|,n为Q的正则形中描述当前性质的析取项Q
ej∧empty的数量,n
0为Q的正则形中描述未来性质的析取项Q
ci∧○Q
i′的数量,1≤n(n
0)≤3
l,m为状态公式Q
ej中原子命题的数目,m
0为状态公式Q
ci中原子命题的数目,1≤m(m
0)≤l;状态子公式a
jk和q
ih属于Q
P,对于任意公式r∈Q
P,
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="27"/>表示r或者
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="82"/>Q
i′是一个PPTL时序公式;步骤3.2:根据步骤3.1所述的正则形定义将期望性质公式Q改写为其正则形,记为NF
Q=f
1∨f
2∨...∨f
n,其中包含n个用析取操作符“∨”连接的期望性质子公式f
1,...,f
n,用这些期望性质子公式组成期望性质子公式集合N
Q={f
1,...,f
n};步骤3.3:定义期望性质公式Q的标记正则图,对于任何以PPTL描述的期望性质公式Q,将Q的标记正则图(LNFG)定义为有向图G=(V(Q),E(Q),V
0,L={L
1,L
2,...L
m}),其中V(Q)是结点集合,每个结点对应一个PPTL公式;E(Q)是有向边的集合,每条边记为(v
Q,Q
e,v
F),即从结点v
Q到结点v
F有一条用状态公式Q
e标记的有向边;V
0是初始结点的集合;标记集合L中的每个子集合L
k(1≤k≤m)为带标签l
k~的结点集合,k为标签的计数变量;步骤3.4:根据步骤3.3所述的标记正则图定义,构造期望性质公式Q的标记正则图,记为G
Q,如果G
Q中不包含v
empty结点,并且对于G
Q中的任意无限路径π,π中出现无限多次的结点的集合记为Inf(π),存在一个标记结点集合L
i,使得Inf(π)是L
i的子集,那么满足Q的状态集合的布尔编码B
Q=0,转到步骤3.8,反之转到步骤3.5;步骤3.5:参见图2,从期望性质子公式集合N
Q中任选一个期望性质子公式f
i,使用以布尔公式符号化表示的状态集合S和迁移关系R计算出满足期望性质子公式f
i的状态集合的布尔编码B
fi,如果f
i中包含状态公式,那么满足该状态公式的状态集合的布尔编码不经过形式判定,直接由符号化的状态集合S和标记函数L求得;步骤3.6:从期望性质子公式集合N
Q中删除f
i,如果N
Q不为空则转到步骤3.5,反之转到步骤3.7;步骤3.7:满足期望性质公式Q的状态集合的布尔编码B
Q=B
f1+...+B
fn;步骤3.8:计算满足期望性质公式Q的状态集合的布尔编码B
Q的过程结束。本发明以布尔公式符号化表示待验证系统模型M的状态空间S和迁移关系R,使用期望性质公式Q的标记正则图G
Q刻画Q是否可满足,使用期望性质公式Q的正则形NF
Q刻画满足Q的状态集合,然后借助于ROBDD对状态空间进行高效、简洁的搜索,获得满足以PPTL描述的期望性质公式Q的状态集合的布尔编码,降低了搜索状态空间所需要的空间和时间复杂度,提升模型检测的效率。实施例3PPTL符号模型检测方法同实施例1~2,参见图4(d)~(k),PPTL符号模型检测方法中通过构建期望性质公式P标记正则图G
P,并检查满足期望性质公式P的模型是否存在,以确定期望性质公式P是否可满足。以期望性质公式P或者P的子公式对应的结点为根结点构建标记正则图G
P的具体步骤包括:首先,定义期望性质公式P的标记正则图。期望性质公式P的标记正则图G
P是有向图,G
P=(V(P),E(P),V
0,L={L
1,L
2,...L
m}),其中V(P)是结点集合,每个结点对应一个PPTL公式;E(P)是有向弧的集合,每条边记为(v
P,P
e,v
M),即从结点v
P到结点v
M有一条用状态公式P
e标记的有向弧;V
0是初始结点的集合;标记集合L中的每个子集合L
k(1≤k≤m)为带标签l
k~的结点集合,k为标签的计数变量。期望性质公式P的标记正则图G
P生成方法如下:步骤3.4.1:期望性质公式P≡P
1;P
2;(P
3)
3;P
4的形式不为形如P
1∨P
2∨...∨P
n的析取范式,仅为P构造一个与P对应的结点v
P,v
P∈V(P)且v
P∈V
0;步骤3.4.2:将计数变量k的初值置为1;步骤3.4.3:从可达结点集合V(P){v
empty}中任选一个结点,由步骤3.4.1知,可达结点集合V(P){v
empty}开始只包含一个结点v
P,v
P对应的PPTL公式P形式为P
1;P
2;(P
3)
3;P
4,将P改写为P
1∧fin(l
1);P
2;(P
3)
3;P
4,P加入计数变量为1的标记结点集合L
1;步骤3.4.4:将P展开为正则形为图4(d)所示的正则形。为期望性质子公式empty构造对应的结点v
empty,将v
empty加入结点集合V(P),将有向边(v
P,P
e,v
ε)加入有向边集合E(P),其中状态公式P
e=P
1∧P
2∧P
3∧P
4;为所有时序公式Q
0,Q
1,Q
2,Q
3,Q
4,Q
5构造对应的结点v
Q0,v
Q1,v
Q2,v
Q3,v
Q4,v
Q5,并将这些结点加入结点集合V(P),将有向边(v
P,P
c0,v
Q0),(v
P,P
c1,v
Q1),(v
P,P
c2,v
Q2),(v
P,P
c3,v
Q3),(v
P,P
c4,v
Q4),(v
P,P
c5,v
Q5)加入有向边集合E(P),其中状态公式P
c0=P
1,P
c1=P
1∧P
2,P
c2=P
1∧P
2∧P
3,P
c3=P
1∧P
2∧P
3,P
c4=P
1∧P
2∧P
3,P
c5=P
1∧P
2∧P
3∧P
4从可达结点集合V(P){v
empty}中删除v
P,并将计数变量k=k+1=2;步骤3.4.5:可达结点集合V(P){v
empty}={v
Q0,v
Q1,v
Q2,v
Q3,v
Q4,v
Q5}不为空,转到步骤3.4.3;步骤3.4.5:有限次重复步骤3.4.3~3.4.5,依次构造出图4(f)~(k)的标记正则图,图4(f)为从结点v
P出发构建的标记正则图,图4(g)为从结点v
Q0出发构建的标记正则图,图4(h)为从结点v
Q1出发构建的标记正则图,图4(i)为从结点v
Q2出发构建的标记正则图,图4(j)为从结点v
Q3出发构建的标记正则图,图4(k)为从结点v
Q4和v
Q5出发构建的标记正则图;步骤3.4.6:从可达结点集合v(P){v
empty}中的结点出发构建期望性质公式P的标记正则图G
P结束。本发明使用期望性质公式P的标记正则图G
P中的有限路径精确刻画期望性质公式P的有穷模型,如图4(f)中从期望性质公式P对应的结点v
P到达期望性质子公式empty对应的结点v
empty的路径,使用G
Q中的无限路径精确刻画Q的无穷模型,如图4(g)中从期望性质子公式Q
0对应的结点v
Q0到v
Q0自身的路径。通过判断有穷和无穷模型的存在情况,提前确定期望性质公式Q是否可满足,如果期望性质公式Q可满足,再进行后续操作计算满足Q的状态集合的布尔编码,如果Q不可满足,那么满足它的状态集合的布尔编码一定为0。同CTL和LTL符号模型检测方法相比,本发明可以较早地得出待验证系统模型不满足期望性质公式Q的结论,节省后续操作所需的时间,提高了检测效率。实施例4PPTL符号模型检测方法同实施例1~3,PPTL符号模型检测中计算满足期望性质子公式f
i的状态集合的布尔编码B
fi的过程涉及到步骤3在其定义中有直接调用自身的过程,即递归调用过程。具体是将步骤3看做一个以PPTL公式作为输入、以布尔公式作为输出的函数Procedure_3,步骤3的定义中,其子过程步骤3.5.2和步骤3.5.3在计算满足PPTL时序公式Q′
i的状态集合的布尔编码B
Q′i时,调用了该函数以Q′
i为实际参数的实例Procedure_3(Q′
i),即B
Q′i=Procedure_3(Q′
i)。参见图4(e),Procedure_3递归调用自身的计算满足PPTL时序公式Q
4的状态集合的布尔编码B
Q4时步骤包括:(1)将PPTL时序公式Q
4展开为其正则形P
4∧empty∨P
4∧○Q
5∨○Q
4;(2)Q
4的正则形中描述当前性质的析取项P
4∧empty中,满足状态公式P
4的状态集合的布尔编码B
P4可以由符号化的状态空间S和标记函数L直接求得;(3)Q
4的正则形中描述未来性质的析取项P
4∧○Q
5∨○Q
4,满足状态公式P
4的状态集合的布尔编码B
P4可以由步骤(2)获得,Q
5为将Q
4展开为其正则形过程中新产生的PPTL时序子公式,那么,转到(4),Q
4为已经出现过的PPTL时序子公式,转到(5);(4)调用步骤3,计算满足时序子公式Q
5的状态集合的布尔编码B
Q5=Procedure_3(Q
5);(5)调用步骤3,并结合不动点理论计算满足时序子公式Q′
b的状态集合的布尔编码B
Q4=fixpoint(Procedure_3(Q
4));(6)计算满足PPTL时序公式Q
4的状态集合的布尔编码B
Q4时,调用以Q
4为实际参数的实例Procedure_3(Q
4),得到B
Q4=Procedure_3(Q
4)=B
P4+B
P4·Procedure_3(Q
5)+fixpoint(Procedure_3(Q
4));(7)Procedure_3自身递归调用过程结束。本发明在步骤3定义中直接调用了步骤3本身,使用步骤3计算满足PPTL时序公式Q
4的状态集合的布尔编码B
Q4时,通过递归调用Procedure_3,将步骤3中Procedure_3(B
Q4)的计算过程转化为满足规模更小的PPTL时序子公式Q
5的状态集合的布尔编码B
Q5=Procedure_3(Q
5)的计算过程。参见图4(e),Q
1表示了一个图4(d)中期望性质公式P的子公式,计算满足Q
1的状态集合的布尔编码B
Q1的过程,可以通过递归,将该过程转化为满足规模更小的时序子公式Q
2,Q
3,Q
4,Q
5的状态集合的布尔编码B
Q2,V
Q3,B
Q4,B
Q5的计算过程,通过层层递归最终将满足这些子公式的状态集合的布尔编码的计算过程转化为形式最简单的时序子公式Q
5的状态集合的布尔编码B
Q5的计算过程,降低了计算满足PPTL时序公式状态集合的布尔编码复杂度,提高了模型检测的效率。实施例5PPTL符号模型检测方法同实施例1~4。参照图3,本发明使用不动点理论刻画满足PPTL时序公式Q′
i≡□a
1的状态集合的布尔编码B
Q′i的计算过程,在数字电路系统中经常含有可以用不动点理论刻画的周期性性质。将Q′
i的展开为其正则形a
1∧empty∨a
1∧○□a
1,满足PPTL时序公式Q′
i≡□a
1的状态集合的布尔编码B
Q′i=B
a1+B
a1·R
-1(B
Q′i),因此B
Q′i为布尔方程τ(B)=B
a1+B
a1·R
-1(B)的不动点,迁移关系R的布尔编码参见图3(a),
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="353"/>的ROBDD表示如图3(b)所示,基于不动点理论计算满足时序公式Q′
i的状态集合的布尔编码B
Q′i的具体步骤如图3(f)所示:步骤3.5.3.1:将布尔方程τ(B)=B
a1+B
a1·R
-1(B)中的自变量B的初值置为B
a1,即B=B
a1,τ(B
a1)=B
a1+B
a1·R
-1(B
a1),
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="665"/>的计算过程参见图3(c),表示布尔公式
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="658"/>的ROBDD与图3(b)中表示B
a1的ROBDD相同,因此
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="490"/>B
a1·R
-1(B
a1)的计算过程参见图3(d),表示布尔公式B
a1·R
-1(B
a1)的ROBDD与图3(b)中表示B
a1的ROBDD相同,因此
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="611"/>τ(B
a1)=B
a1+B
a1·R
-1(B
a1)的计算过程参见图3(e),因此
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>将τ(B)的值赋给布尔变量B′,B′为临时变量用以保存中间数据;步骤3.5.3.2:自变量B的值为
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="393"/>布尔变量B′的值为
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>由于B=B′=B
a1,因此B
a1为布尔方程τ(B)=B
a1+B
a1·R
-1(B)的不动点,转到步骤3.5.3.4,否则转到步骤3.5.3.3;步骤3.5.3.3:将布尔变量B′的值赋给自变量B,将B更新之后的值代入布尔方程τ(B),并将τ(B)的值赋给布尔变量B′,转到步骤3.5.3.2,由于步骤3.5.3.2计算后B=B′=B
a1,不会转到步骤3.5.3.3,因此实际计算过程中本步骤从略;步骤3.5.3.4:B
Q′i的值为B的值,即
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="479"/>满足时序公式Q′
i的状态集合的布尔编码B
Q′i的计算过程结束。本发明使用不动点理论刻画满足时序公式Q′
i的状态集合的布尔编码B
Q′i。与使用基本图形数据结构存储状态空间的模型检测计算不动点的方法相比,本发明通过定义以B
Q′i为自变量的布尔方程τ(B),并将τ(B)使用ROBDD表示,借助于ROBDD的高效布尔方程操作机制,加快了布尔方程τ(B)不动点的计算速度,减少计算不动点需要的迭代次数,提高PPTL符号模型检测过程的效率。实施例6PPTL符号模型检测方法同实施例1~4,参见图4,本发明用于对硬件电路系统进行模型检测,待验证系统为采用Verilog硬件描述语言书写的3x+1问题数字电路系统,参见图4(a),该系统的主要功能包括:(1)初始状态下,从3x+1问题数字电路系统的输入端输入一个正整数x,并将其存储在6位数据寄存器register_x中;(2)在每个时钟上升沿(posedgexa0clk)对数据寄存器register_x中的正整数x进行判断,如果该x为偶数,转到(3),如果x为奇数,转到(4),如果x为1,转到(5);(3)将正整数x作为被除数,正整数2作为除数送入6位阵列除法器,并将阵列除法器返回的计算结果存储在数据寄存器register_x中,即x=x/2,,转到(2);(4)将正整数x和正整数3送入6位并行乘法器,并将并行乘法器返回的计算结果跟正整数1一起送入全加器,然后将全加器返回的结果存储在数据寄存器register_x中,即x=3x+1,转到(2);(5)6位数据寄存器register_x中x的值保持为1。在3x+1问题数字电路系统的输入端输入正整数5时,该数字电路系统的期望性质公式为P
1;P
2;(P
3)
3;P
4。其中期望性质子公式
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="434"/>期望性质子公式
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="380"/>期望性质子公式
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="406"/>期望性质子公式
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="176"/>
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="222"/>原子命题a
1表示当前时钟周期6位数据寄存器register_x中正整数的值为偶数,原子命题a
2为1表示当前时钟周期6位数据寄存器register_x中正整数x的值为上一个时钟周期6位数据寄存器register_x中正整数x的值乘以3加上1,原子命题a
3表示当前时钟周期6位数据寄存器register_x中正整数x的值为1。3x+1问题数字电路系统以Kripke结构描述的待验证模型M=(S,R,L),参见图4(b),其中原题命题集合AP={a
1,a
2,a
3},对于1≤i≤3,a
i表示一个原子命题,状态集合S={s
0,s
1,s
2,s
3},对于0≤i≤3,s
i表示一个状态,迁移关系R={(s
0,s
1),(s
1,s
2),(s
2,s
2),(s
2,s
3),(s
3,s
3)},对于0≤i(j}≤3,(s
i,s
j)}∈R表示一个状态迁移,标记函数为
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="172"/>表示s
0状态下满足的原子命题集合为空集,L(s
1)={a
1,a
2},表示原子命题a
1,a
2在状态s
1成立,L(s
2)={a
1},表示原子命题a
1在状态s
2成立,L(s
3)={a
3},表示原子命题a
3在状态s
3成立。3x+1问题数字电路系统的PPTL符号模型检测过程包括:步骤1:将图4(b)中待验证系统模型M中的状态集合S和迁移关系R编码为布尔公式,其中状态s
0,s
1,s
2,s
3的布尔编码分别为000,110,100,001,状态集合S的布尔编码为
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="274"/>迁移关系R的布尔编码表示参见图4(c);步骤2:使用PPTL描述待验证系统的期望性质,得到期望性质公式P≡P
1;P
2;(P
3)
3;P
4;步骤3:计算满足期望性质公式Q的状态集合的布尔编码B
Q;步骤3.1:实际计算过程中,定义期望性质公式Q的正则形的步骤从略;步骤3.2:将期望性质公式P展开为其正则形NF
P,参见图4(d),NF
P包含7个析取项f
1,...,f
7,f
1=P
1∧P
2∧P
3∧P
4∧empty,f
2=P
1∧○Q
0,f
3=P
1∧P
2∧○Q
1,f
4=P
1∧P
2∧P
3∧○Q
2,f
5=P
1∧P
2∧P
3∧○Q
3,f
6=P
1∧P
2∧P
3∧○Q
4,f
7=P
1∧P
2∧P
3∧P
4∧○Q
5,其中Q
0表示true;(P
2;(P
3;(P
3;(P
3;P
4)))),Q
1表示true;(P
3;(P
3;(P
3;P
4))),Q
2表示true;(P
3;(P
3;P
4)),Q
3表示true;(P
3;P
4),Q
4表示true;P
4,Q
5表示true;用这7个析取项组成期望性质子公式集合N
Q={f
1,...,f
7};步骤3.3:实际计算过程中,定义期望性质公式Q的标记正则图的步骤从略;步骤3.4:构造的期望性质公式P的标记正则图,记为G
P,参见图4(f)~图4(k),G
P中既包含有穷路径也包含无穷路径,因此,期望性质公式P可满足;步骤3.5:计算所有满足期望性质子公式的状态集合的布尔编码,需要首先将期望性质子公式Q
0~Q
5展开为正则形,Q
0~Q
5的正则形参见图4(e),然后分别计算满足期望性质子公式Q
0,Q
1,Q
2,Q
3,Q
4,Q
5的状态集合的布尔编码B
Q0,B
Q1,B
Q2,B
Q3,B
Q4,B
Q5:B
P=B
P1∧P2∧P3∧P4+B
P1∧P2∧P3∧P4·R
-1(B
Q5)+B
P1·R
-1(B
Q0)+B
P1∧P2·R
-1(B
Q1)+B
P1∧P2∧P3·R
-1(B
Q2+B
Q3+B
Q4)B
Q0=B
P2∧P3∧P4+B
P2∧P3∧P4·R
-1(B
Q5)+R
-1(B
Q0)+B
P2·R
-1(B
Q1)+B
P2∧P3·R
-1(B
Q2+B
Q3+B
Q4)B
Q1=B
P3∧P4+B
P3∧P4·R
-1(B
Q5)+R
-1(B
Q1)+B
P3·R
-1(B
Q2+B
Q3+B
Q4)B
Q2=B
P3∧P4+B
P3∧P4·R
-1(B
Q5)+R
-1(B
Q2)+B
P3·R
-1(B
Q3+B
Q4)B
Q3=B
P3∧P4+B
P3∧P4·R
-1(B
Q5)+R
-1(B
Q2)+B
P3·R
-1(B
Q3+B
Q4)B
Q4=B
P4+B
P4·R
-1(B
Q5)+R
-1(B
Q4)B
Q5=1步骤3.6:计算满足期望性质子公式Q
4的状态集合的布尔编码B
Q4时,B
Q4为布尔公式τ(B)=B
P4+B
P4·R
-1(B
Q5)+R
-1(B
Q4)的不动点,根据不动点理论计算出满足期望性质子公式Q
4的状态集合的布尔编码
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="350"/>步骤3.7:计算满足期望性质子公式Q
3的状态集合的布尔编码B
Q3时,将步骤3.6中得到的B
Q4带入步骤3.5中的B
Q3,得到B
Q3为布尔公式
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="374"/>
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>的不动点,根据不动点理论计算出满足期望性质子公式Q
3的状态集合的布尔编码
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="388"/>类似的,可以计算出
B Q 1 = B Q 2 = x 1 - x 2 - x 3 - + x 1 x 3 - ; ]]>步骤3.8:将步骤3.6~3.7得到的满足期望性质子公式Q
0,Q
1,Q
2,Q
3,Q
4,Q
5的状态集合的布尔编码B
Q0,B
Q1,B
Q2,B
Q3,B
Q4,B
Q5带入B
P,得到满足期望性质公式P的状态集合的布尔编码
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="247"/>步骤4:由于B
P≠0,因此待检测的模型M满足期望的性P≡P
1;P
2;(P
3)
3;P
4,即以Verilog描述的3x+1数字电路系统,当输入端x的初始值为整数5时满足性质P
1;P
2;(P
3)
3;P
4;步骤5:待验证的3x+1问题数字电路系统的PPTL符号模型检测结束。大量的数字电路系统、应用软件控制逻辑、以及网络通信协议中包含许多布尔变量,布尔变量和布尔公式均可以由唯一确定的ROBDD表示,本发明借助ROBDD操作布尔公式,特别适合于高效的检测和验证数字电路系统设计缺陷、应用软件控制逻辑错误以及网络通信协议的正确性。综上所述,本发明属于可信计算领域,主要涉及系统形式化建模与验证技术领域,尤其涉及命题投影时序逻辑(PPTL)和符号模型检测方法(SMC)。本发明主要针对现有模型检测方法中出现的时序逻辑描述能力不足和状态空间爆炸问题,提出一种PPTL符号模型检测方法,使用规范语言PPTL描述待验证系统的期望性质,可以描述CTL和LTL等现有的时序逻辑无法描述的性质,如状态敏感性质、顺序性质和闭包性质,且PPTL的表达能力等价于完全正则语言,因此可以将符号模型检测中待验证系统期望性质的描述能力扩展到完全正则型。通过将待验证系统的状态空间和迁移关系使用布尔公式进行编码,借助ROBDD的压缩存储和有效地布尔公式操作机制对待验证系统模型的状态空间进行高效、简洁的搜索,降低了存储和操作状态空间所需要的内存空间,从而提升模型检测可以处理问题的规模,并且有效缓解状态空间爆炸问题。本发明可应用于工业、农业、军事、科研等领域硬件系统设计缺陷的检测,软件系统及控制逻辑错误的检查以及通信协议正确性的形式化验证。